package com.aura.springbook.service;

import com.aura.springbook.model.Book;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 图书服务接口
 * 
 * 继承MyBatis-Plus的IService，提供基本的CRUD操作
 * 同时定义了一些自定义的业务方法
 * 
 * 提供以下功能：
 * 1. 基本的增删改查操作（继承自IService）
 * 2. 分页查询所有图书
 * 3. 根据分类ID分页查询图书
 * 4. 根据关键词搜索图书
 * 5. 根据ID获取图书详情
 */
public interface BookService extends IService<Book> {
    
    /**
     * 分页查询所有图书
     * 
     * 支持分页查询系统中的所有图书信息
     * 
     * @param current 当前页
     * @param size 每页大小
     * @return 图书分页数据
     */
    IPage<Book> getBooksByPage(int current, int size);
    
    /**
     * 根据分类ID分页查询图书
     * 
     * 根据指定分类ID分页查询该分类下的图书信息
     * 
     * @param categoryId 分类ID
     * @param current 当前页
     * @param size 每页大小
     * @return 图书分页数据
     */
    IPage<Book> getBooksByCategory(Long categoryId, int current, int size);
    
    /**
     * 根据关键词搜索图书
     * 
     * 支持根据关键词模糊搜索图书标题或作者
     * 
     * @param keyword 关键词
     * @param current 当前页
     * @param size 每页大小
     * @return 图书分页数据
     */
    IPage<Book> searchBooks(String keyword, int current, int size);
    
    /**
     * 根据ID获取图书详情
     * 
     * 根据图书ID查询图书的详细信息
     * 
     * @param id 图书ID
     * @return 图书详情
     */
    Book getBookDetail(Long id);
}